<?php
/**
 * 抽象根节点
 * 2019年12月24日11:48:28
 */
namespace Application\Common\Composite\UseComposite;

class Component
{
    // 节点名称
    protected $name;
    // 节点
    protected $nodes = array();
    // 构造函数
    public function __construct($name=null)
    {
        $this -> name = $name;
    }
    // 添加节点
    public function add($node=null)
    {
        if(empty($node)){
            return false;
        }
        $this -> nodes[] = $node;
    }
    // 删除节点
    public function remove($node = null)
    {
        if(empty($node)){
            $this -> nodes = array();
            return true;
        }
        foreach($this -> nodes as $k => $v){
            if($v === $node){
                unset($this -> nodes[$k]);
                break;
            }
        }
        return true;
    }
    // 执行节点
    public function display($function = null)
    {
        $function = $function?:'display';
        foreach($this -> nodes as $k => $v){
            $v -> $function();
        }
        return true;
    }
}
